import { userStore } from '@/stores/UserStore'


/* 


添加拦截器：
拦截request 请求
拦截uploadFile文件上传
*/
const baseURL='http://127.0.0.1:8080'
//添加拦截器
const httpInterceptor = {
  //请求之前拦截
  //options 是请求参数
  invoke(options) {
    //1. 非http开头的url，则加上baseURL
   if(!options.url.startsWith('http')) {
    options.url = baseURL + options.url
  }
  //2. 请求超时，
  options.timeout = 10000
  console.log('options:', options);
  console.log('options.header:'+options.header)
  //3. 添加token
  const token = uni.getStorageSync('token')
  if (!options.header) {
    options.header = {};
  }
  if(token) {
    options.header.authentication = token
  }
  
  }
}
uni.addInterceptor('request',httpInterceptor )
uni.addInterceptor('uploadFile',httpInterceptor )

const store = userStore()

export const http=(options)=>{
    //1. 返回Promise对象
    return new Promise((resolve,reject)=>{
        uni.request({
            ...options,
            success:(res)=>{
                console.log('res:'+res)
                if(res.statusCode >= 200 && res.statusCode < 300){ 
                     resolve(res.data)
                }else if(res.statusCode ===401){
                    //401错误 清理用户信息，跳转到登录页面
                    store.clearUser() 
                    
                    uni.showToast({
                        title:'登录过期，请重新登录',
                        icon:'none' //提示图标
                    })
                    //跳转页面
                    uni.navigateTo({
                        url:'/pages/login/login'
                    })
                   reject(res)
                }else{ 
                    //其他错误，根据后端错误信息提示
                    uni.showToast({
                        title:res.data.msg || '请求失败',
                        icon:'none' //提示图标
                    })
                    reject(res)
            }
               
            },
            // 响应失败
            fail:(err)=>{
               uni.showToast({
                        title:'网络错误，换个网路试试',
                        icon:'none' //提示图标
                    })
                    reject(err)
            }
        })
    })
}
